package com.snpic.appaw.module.member.dal.dataobject.login;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 用户信息表
 * </p>
 *
 * @author JiJun
 * @since 2025-08-21
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("e_customer")
public class ECustomer implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户名
     */
    private String name;

    /**
     * 密码
     * 不会被序列化到前端
     */
    @JsonIgnore
    private String password;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 编码
     */
    private String code;

    /**
     * 用户类型，引流激活标志位 1-个人用户 2-团体用户
     */
    private String type;

    /**
     * 0-无效或暂停 1-有效  默认为:1 2-被合并
     */
    private String status;

    /**
     * 性别 1-男 2-女
     */
    private String sex;

    /**
     * 生日
     */
    private LocalDateTime birthday;

    /**
     * 证件类型
     */
    private String idType;

    /**
     * 证件号
     */
    private String idNo;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 座机号
     */
    private String telephone;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 地址
     */
    private String address;

    /**
     * 邮编
     */
    private String zip;

    /**
     * 用户来源：01-APP注册;02-微信注册;03-官网注册;04-邀请注册;05-微信邀请注册;06-移动官网注册
     */
    private String customerSource;

    /**
     * 手机认证状态 0-未认证 1-已认证
     */
    private String mobileAuth;

    /**
     * 邮箱认证状态 0-未认证 1-已认证
     */
    private String emailAuth;

    /**
     * 实名认证状态 0-未认证 1-已认证
     */
    private String idAuth;

    /**
     * 实名认证来源：101-官网；102-微信小程序；103-APP;104-微信公众号；105-微信分享；106-移动官网； 002、tianiosSecretKeyan-苹果; 001、tianandroidSecretKeyan-安卓
     */
    private String idAuthSource;

    /**
     * 主账户ID
     */
    private String masterCustomerId;

    /**
     * 所在省code
     */
    private String provinceCode;

    /**
     * 所在市code
     */
    private String cityCode;

    /**
     * 推荐人手机号/ID(已废弃)
     */
    private String refereeId;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 资格证号
     */
    private String agentNo;

    /**
     * 兑换密码
     */
    private String exchangePwd;

    /**
     * 部门id
     */
    private Long departmentId;

    /**
     * 推荐人级别
     */
    private Long recommendLevel;

    /**
     * 能发展的下级的最大值(配置表取)
     */
    private Long maxNumber;

    /**
     * 客户来源
     */
    private String channelType;

    /**
     * 频道代码
     */
    private String channelCode;

    /**
     * 注册日期
     */
    private LocalDateTime registerDate;

    /**
     * 创建者
     */
    private String creator;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    private String updater;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 删除标志位
     */
    private Boolean deleted;

    /**
     * 是否APP登录或注册（适用于消息推送）：1-是；0-否
     */
    private String flag;

    /**
     * sign_days
     */
    private Long signDays;

    /**
     * honour_level
     */
    private String honourLevel;

    /**
     * user_level
     */
    private Long userLevel;

    /**
     * if_change
     */
    private String ifChange;

    /**
     * is_valid
     */
    private String isValid;

    /**
     * 微信id
     */
    private String openId;

    /**
     * 用户头像
     */
    private String headImage;

    /**
     * 银行账号
     */
    private String bankNo;

    /**
     * 剩余抽奖次数
     */
    private Long drawsAmount;

    /**
     * 实名时间
     */
    private LocalDateTime authDate;

    /**
     * 实名供应商，MANUAL-人工
     */
    private String authSupplier;

    /**
     * openId更新时间
     */
    private LocalDateTime openidChangeTime;

    /**
     * 绑定状态，确认openid是否绑定  0/空-待确认  1-已确认
     */
    private String bindStatus;

    /**
     * 原始oracle中的id，用于数据迁移
     */
    private Long oldId;


}
